#pragma once

// Forward declarations
template<class Type> class Rect2_t;
template<class Type> class Point2_t;
class Polygon2;
class Color4;

namespace glExt {
	// Calls the appropriate glVertex2 function given the type of Point2_t
	template<class Type>
	void emitVertex( const Point2_t<Type>& pt );

	// Calls the appropriate glVertex2 function for each vertex in a rectangle
	template<class Type>
	void emitRect( const Rect2_t<Type>& rect );

	void emitColor( const Color4& color );

	void renderPolygon( const Polygon2& poly, double width, const Color4& color, bool outline = true, bool normals = false, bool wireframe = false );
}